#include<bits/stdc++.h>
using namespace std;
struct ikun{
	int d,v,a;
};
ikun n[100005];
int m[100005];
int m1[100005];
int main(){
	freopen("detect.in","r",stdin);
	freopen("detect.out","w",stdout);
	int a,b,c,e,g=0,f,u;
	double v;
	cin>>a;
	for(int i=1;i<=a;i++){
		g=0;
		u=0;
		cin>>b>>c>>f>>e;
		//f=pow(e,2);
		for(int j=1;j<=b;j++){
			cin>>n[j].d>>n[j].v>>n[j].a;
		}
		for(int j=1;j<=c;j++){
			cin>>m[j];
			u=max(u,m[j]);
		}
		for(int j=b;j>=1;j--){
			if(n[j].v==0){
				if(n[j].v>e)g++;
				if(n[j].d>u and n[j].v>e) g--;
			}
			else{
				if(n[j].d<=u){
					v=sqrt(pow(n[j].v,2)*1.0+2*n[j].a*(u-n[j].d)*1.0);
					if(v>e) g++;
				}
			}
		}
		if(g==0) c++;
		cout<<g<<' '<<c-1<<endl;
		/*for(int j=1;j<=b;j++){
			if(n[j].a!=0){
				g=pow(n[j].v,2);
				g=f-g;
				h=2.0*n[j].a;
				h=g/h;
				if(n[j].a>0){
					bool p=0;
					for(int k=1;k<=c;k++){
						if(m[k]>=h and m[k]<=d){
							m1[k]
						}
					}
				}
			}
		}*/
	}
	return 0;
}
